from rest_framework import serializers
# FileExtensionValidator 文件后缀名验证器  内置了所有的图片的格式 get_available_image_extensions
from django.core.validators import FileExtensionValidator,get_available_image_extensions
from rest_framework.exceptions import ValidationError

class ImageSerialize(serializers.Serializer):
    # image = serializers.ImageField(validators=[FileExtensionValidator(get_available_image_extensions())])
    # invalid_image这个错误信息 会在图片后缀名不符合要求是触发
    # 图片后缀验证
    image = serializers.ImageField(validators=[FileExtensionValidator(['png','jpg','jpeg','gif'])],error_messages={'require':'请上传图片','invalid_image': '请上传正确格式的图片！'})
    # 验证上传image字段的值
    def validate_image(self, value):
        # 默认单位是字节 byte
        # 0.5M
        max_size = 0.5 * 1024 * 1024
        size = value.size
        if size > max_size:
            # 注意exceptions.ValidationError是用于序列化器之外的一般验证错误，
            # return ValidationError({'detail': '您上传的文件大小超过规定限制'})
            raise serializers.ValidationError('图片最大不能超过0.5MB！')
        return value